#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>



int main()
{
    int fd = open("log.txt", O_RDONLY);
    if (fd < 0) exit(1);

    dup2(fd, 0);
    close(fd);


    while(1)
    {
        char buffer[64];
        if(fgets(buffer, sizeof(buffer), stdin) == NULL) break;
        printf("%s", buffer);
    }
    


    return 0;
}


//int main()
//{
//    umask(0);
//    //close(1);
//
//    int fd = open("log.txt", O_CREAT | O_WRONLY | O_APPEND, 0666);
//    if(fd < 0) exit(1);
//    //printf("fd: %d\n", fd); // 重定向到fd, stdout->fd = 1
//    
//    dup2(fd, 1);
//    close(fd);
//    
//
//    printf("fd: %d\n", fd);
//    printf("hello bit\n");
//   // printf("hello bit\n");
//   // printf("hello bit\n");
//   // fprintf(stdout, "hello stdout\n");
//   // fprintf(stdout, "hello stdout\n");
//   // fprintf(stdout, "hello stdout\n");
//   // fprintf(stdout, "hello stdout\n");
//
//    //const char* msg = "hello world\n";
//    //write(fd, msg, strlen(msg));
//    //close(fd);
//
//
//    return 0;
//}

//int main()
//{
//    //printf("stdin: %d\n", stdin->_fileno);
//    //printf("stdout: %d\n", stdout->_fileno);
//    //printf("stderr: %d\n", stderr->_fileno);
//
//    //printf("\n\n");
//    
//    
//    close(0);
//    close(2);
//    umask(0);
//    
//    int fd1 = open("log.txt1", O_WRONLY | O_CREAT | O_TRUNC, 0666);
//    int fd2 = open("log.txt2", O_WRONLY | O_CREAT | O_TRUNC, 0666);
//    int fd3 = open("log.txt3", O_WRONLY | O_CREAT | O_TRUNC, 0666);
//    int fd4 = open("log.txt4", O_WRONLY | O_CREAT | O_TRUNC, 0666);
//    if (fd1 < 0) exit(1);
//    if (fd2 < 0) exit(1);
//    if (fd3 < 0) exit(1);
//    if (fd4 < 0) exit(1);
//
//    printf("fd1: %d\n", fd1);
//    printf("fd2: %d\n", fd2);
//    printf("fd3: %d\n", fd3);
//    printf("fd4: %d\n", fd4);
//
//    close(fd1);
//    close(fd2);
//    close(fd3);
//    close(fd4);
//    return 0;
//}
//
//
//
//
//
//
//
//
////int main()
////{
////    umask(0);
////  int fd = open("log.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
////    //int fd = open("log.txt", O_WRONLY | O_CREAT | O_APPEND, 0666);
////    int fd = open("log.txt", O_RDONLY);
////    if (fd < 0)
////    {
////        perror("open");
////        return 1;
////    }
////    printf("fd: %d\n", fd); 
////
////    while(1)
////    {
////        char buffer[64];
////        int n = read(fd, buffer, sizeof(buffer) - 1);
////        if(n > 0)
////        {
////            buffer[n] = 0;
////            printf("%s", buffer);
////        }
////        else if(n == 0)
////        {
////            break;
////        }
////    }
////
////
////    //const char* msg = "hello world!\n";
////   // int cnt = 1;
////   // int a = 1234567;
////   // while(cnt)
////   // {
////   //     // 当做字符写
////   //     char buffer[16];
////   //     snprintf(buffer, sizeof(buffer), "%d", a);
////   //     write(fd, buffer, strlen(buffer));
////   //     cnt--;
////   // }
////
////    close(fd);
////    return 0;
////}
